源于pandas做数据分析很好用,map、apply使用的也比较多,非常的耗时间。map性能优于apply我专门有文字讲解。 此次再次基础上再次提升 ![](https://img-blog.csdnimg.cn/0ee0dcbad05940279869ecad60ff757b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YeR6J6N5bCP55m95pWw5o2u5YiG5p6Q5LmL6Lev,size_20,color_FFFFFF,t_70,g_se,x_16)
# 加速前
import time
import pandas as pd
import numpy as np
def func(x):
import math
return math.sin(x.a**2) + math.sin(x.b**2)
df_size = int(5e6)
if __name__ == '__main__':
time_start = time.time()
df = pd.DataFrame(dict(a=np.random.randint(1, 8, df_size),
b=np.random.rand(df_size)))
res = df.parallel_apply(func, axis=1)
time_end = time.time()
print("并行代码耗时 %f s" % (time_end - time_start))
# 加速后
import time
import pandas as pd
import numpy as np
from pandarallel import pandarallel # 导入pandaralle
pandarallel.initialize() # 初始化该这个b...并行库
# 调用的函数
def func(x):
import math
return math.sin(x.a**2) + math.sin(x.b**2)
df_size = int(5e6)
if __name__ == '__main__':
# 需要在
time_start = time.time()
df = pd.DataFrame(dict(a=np.random.randint(1, 8, df_size),
b=np.random.rand(df_size)))
res = df.parallel_apply(func, axis=1)
time_end = time.time()
print("并行代码耗时 %f s" % (time_end - time_start))
两者运行时间可以运行做对比,加速后明显快于加速后。
介绍windows系统使用注意: (一)pandas 中的替换 apply替换parallel_apply map替换parallel_map ![](https://img-blog.csdnimg.cn/9d41c2671ded41118a3c8006f23df39f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YeR6J6N5bCP55m95pWw5o2u5YiG5p6Q5LmL6Lev,size_17,color_FFFFFF,t_70,g_se,x_16)
(二)加入 from pandarallel import pandarallel # 导入pandaralle pandarallel.initialize() # 初始化该这个b…并行库 (三)需要在main下进行运行不然会报错 (四)windows中运行 def中使用的包需要内部导入,liunx不存在这个问题。
def func(x):
import math
return math.sin(x.a**2) + math.sin(x.b**2)
|